package com.zhuiyun.project.api.joingroup.service;

import com.zhuiyun.project.api.joingroup.entity.JoinGroup;
import com.zhuiyun.project.api.joingroup.model.JoinGroupModel;
import com.zhuiyun.project.api.messagelist.model.MessageListModel;
import com.zhuiyun.project.common.response.CommonResult;

import java.util.List;
import java.util.Map;

/**
 * @ClassName JoinGroupService
 * @Description TODO
 * @Author kdj
 * @Date 2023/7/24 17:17
 **/
public interface JoinGroupService {
    /**
     * @param userId
     * @param groupId
     * @Author kdj
     * @Description 添加加入群聊的消息
     * @Date 2023/7/24 21:23
     * @Return boolean
     */
    boolean addSysUserInJoinGroup(int userId, int groupId, String joinCause, int type);

    /**
     * @param userId
     * @param groupId
     * @param type
     * @Author kdj
     * @Description 根据userId，groupId，type 获取JoinGroup数据
     * @Date 2023/7/24 21:24
     * @Return com.zhuiyun.project.api.joingroup.entity.JoinGroup
     */
    JoinGroup getGroupData(int userId, int groupId, int type);

    /**
     * @param id
     * @param type
     * @Author kdj
     * @Description 根据用户id和类型获取用户加入的群聊id
     * @Date 2023/7/25 16:11
     * @Return void
     */
    List<Integer> queryGroupsByUserId(int id, int type);

    /**
     * @param id
     * @param type
     * @Author kdj
     * @Description 根据用户id和类型获取用户加入的群聊对象
     * @Date 2023/7/25 16:11
     * @Return void
     */
    List<Map> queryGroupsDataByUserId(int id, int type);

    /**
     * @param joinGroupModel
     * @Author kdj
     * @Description 申请加入群聊 系统人员
     * @Date 2023/7/25 21:39
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    CommonResult toJoinGroupSys(JoinGroupModel joinGroupModel);

    /**
     * @Author 小江
     * @Description //TODO 根据群号查询群成员
     * @Date 8:44 2023/7/27
     **/
    CommonResult setByGroupId(int groupId);

    /**
     * @Author 小江
     * @Description //TODO 踢出群聊
     * @Date 19:47 2023/7/27
     **/


    /**
     * @Author 小江
     * @Description //TODO 添加禁言时间
     * @Date 10:11 2023/7/28
     **/

    /**
     * @param joinGroupModel
     * @Author kdj
     * @Description 申请添加群聊
     * @Date 2023/7/27 15:15
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    CommonResult toJoinGroupApp(JoinGroupModel joinGroupModel);

    /**
     * @param userId
     * @Author kdj
     * @Description 获取我创建的 群的入群审核
     * @Date 2023/7/27 16:23
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    CommonResult getJoinGroupAudits(int userId);

    /**
     * @param groupId
     * @Author kdj
     * @Description 根据群id获取入群申请
     * @Date 2023/7/27 16:28
     * @Return com.zhuiyun.project.api.joingroup.entity.JoinGroup
     */
    List<JoinGroupModel> getJoinGroupAuditsById(int groupId);

    /**
     * @param createUserId
     * @Author kdj
     * @Description 获取未处理的未读数
     * @Date 2023/7/27 20:35
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    CommonResult getUnReadJoinGroup(int createUserId);

    /**
     * @param userId
     * @Author kdj
     * @Description 获取我申请过的入群审核
     * @Date 2023/7/28 10:33
     * @Return java.util.List<java.util.Map>
     */
    List<Map> getJoinGroupAuditByMe(int userId);


    /**
     * @param joinGroupModel
     * @Author kdj
     * @Description 审核拒绝加入群聊
     * @Date 2023/7/28 11:01
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    CommonResult toNoJoin(JoinGroupModel joinGroupModel);

    /**
     * @param joinGroupModel
     * @Author kdj
     * @Description 审核通过加入群聊
     * @Date 2023/7/28 15:35
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    CommonResult toOkJoin(JoinGroupModel joinGroupModel);

    /**
     * @Author 小江
     * @Description //TODO 解除禁言
     * @Date 10:54 2023/7/29
     **/
    int relievetime(MessageListModel model);


    /**
     * @Author 小江
     * @Description //TODO 禁言消息
     * @Date 9:42 2023/7/31
     **/

    boolean stormroup(int userId, int groupId);

    CommonResult stormFriend(Integer fromId, Integer groupId);

    /**
    * @Author kdj
    * @Description 禁言
    * @Date 2023/8/10 21:58
    * @Return int
    * @param model
    */
    int joinins(MessageListModel model);

    /**
     * @param groupId
     * @param userId
     * @Author kdj
     * @Description 根据群号查询群成员
     * @Date 2023/8/10 18:43
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    CommonResult setLinkGroupId(int groupId, int userId);

    /**
     * @Author 小江
     * @Description //TODO 踢出群聊
     * @Date 8:49 2023/8/2
     **/
    boolean delNoreason(Integer fromId, String groupId);

    /**
     * @Author 小江
     * @Description //TODO 踢出用户群聊
     * @Date 9:06 2023/8/2
     **/
    int groupDel(Integer fromId, Integer toId, String groupName,String value);

    /**
     * @Author 小江
     * @Description //TODO 退出群聊
     * @Date 9:07 2023/8/3
     **/
    int plainDel(Integer userId, Integer groupId);


//    boolean stormiend(Integer toId);
}
